// OGoMojo
// Whitemice.MOGI.IAppointment
// License: LGPL
// Copyright: Whitemice Consulting, 2006
// Author(s): Adam Tauno Williams (awilliam@whitemice.org)
using System;
using System.Collections;

namespace Whitemice.MOGI {
	/// \brief Enumeration of Appointment Types
	public enum AppointmentType : uint {
		Unknown = 0,
		Birthday = 1, 
		PhoneCall = 2,
		DueDate = 3,
		Vacation = 4,
		AtHome = 5,
		Ill = 6,
		Meeting = 7,
		AllTypes = 8,
		Outward = 9,
        TradeShow = 10
   	}

	/// \brief Interface to Appointment documents
	public interface IAppointment : IDocument {
		string Number { get; }
		string Title { get; set; }
		DateTime Start { get; set; }
		DateTime End { get; set; }
		string Comment { get; set; }
		string Location { get; set; }
		bool Cyclic { get; }
		string Cycle { get; set; }
		DateTime CycleEnd { get; set; }
		AppointmentType Class { get; set; }
		ArrayList Participants { get; }
		void AddParticipant(string documentId);
		void AddParticipant(string documentId, ParticipantRole role);
		void RemoveParticipant(string documentId);
		void ClearParticipants();
		bool IsParticipant(string documentId);
		ParticipantRole ParticipantsRole(string participant);
		ParticipantStatus ParticipantsStatus(string participant);
	}
}